using System;
using System.Collections.Generic;
using Microsoft.VisualStudio;
using Microsoft.VisualStudio.OLE.Interop;
using Microsoft.VisualStudio.Shell.Interop;
using IServiceProvider=Microsoft.VisualStudio.OLE.Interop.IServiceProvider;

namespace Microsoft.WowAddonStudio.Tests.Common.Mocks
{
	/// <summary>
	/// 
	/// </summary>
	public class MockShell : IVsShell,
	                         SVsShell,
	                         SVsUIShell,
	                         IVsUIShell,
	                         IVsRunningDocumentTable,
	                         SVsTrackProjectDocuments,
	                         IVsTrackProjectDocuments2,
	                         IVsWindowFrame,
	                         IVsUIHierarchyWindow
	{
		#region IVsShell Members

		/// <summary>
		/// Gets the package enum.
		/// </summary>
		/// <param name="ppenum">The ppenum.</param>
		/// <returns></returns>
		public int GetPackageEnum(out IEnumPackages ppenum)
		{
			throw new NotImplementedException();
		}

		#region IVsWindowFrame Members

		/// <summary>
		/// Shows this instance.
		/// </summary>
		/// <returns></returns>
		public int Show()
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Hides this instance.
		/// </summary>
		/// <returns></returns>
		public int Hide()
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Determines whether this instance is visible.
		/// </summary>
		/// <returns></returns>
		public int IsVisible()
		{
			return VSConstants.S_FALSE;
		}

		/// <summary>
		/// Shows the no activate.
		/// </summary>
		/// <returns></returns>
		public int ShowNoActivate()
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Closes the frame.
		/// </summary>
		/// <param name="grfSaveOptions">The GRF save options.</param>
		/// <returns></returns>
		public int CloseFrame(uint grfSaveOptions)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Sets the frame pos.
		/// </summary>
		/// <param name="dwSFP">The dw SFP.</param>
		/// <param name="rguidRelativeTo">The rguid relative to.</param>
		/// <param name="x">The x.</param>
		/// <param name="y">The y.</param>
		/// <param name="cx">The cx.</param>
		/// <param name="cy">The cy.</param>
		/// <returns></returns>
		public int SetFramePos(VSSETFRAMEPOS dwSFP, ref Guid rguidRelativeTo, int x, int y, int cx, int cy)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Gets the frame pos.
		/// </summary>
		/// <param name="pdwSFP">The PDW SFP.</param>
		/// <param name="pguidRelativeTo">The pguid relative to.</param>
		/// <param name="px">The px.</param>
		/// <param name="py">The py.</param>
		/// <param name="pcx">The PCX.</param>
		/// <param name="pcy">The pcy.</param>
		/// <returns></returns>
		public int GetFramePos(VSSETFRAMEPOS[] pdwSFP, out Guid pguidRelativeTo, out int px, out int py, out int pcx,
		                       out int pcy)
		{
			throw new NotImplementedException();
		}

		#endregion

		/// <summary>
		/// Gets the property.
		/// </summary>
		/// <param name="propid">The propid.</param>
		/// <param name="pvar">The pvar.</param>
		/// <returns></returns>
		public int GetProperty(int propid, out object pvar)
		{
			pvar = 0;
			var vsPropId = (__VSSPROPID) propid;
			if (vsPropId == __VSSPROPID.VSSPROPID_IsInCommandLineMode)
			{
				pvar = false;
				return VSConstants.S_OK;
			}
			if ((__VSFPROPID) vsPropId == __VSFPROPID.VSFPROPID_DocView)
			{
				pvar = this;
			}
			return VSConstants.S_OK;
		}

		/// <summary>
		/// Sets the property.
		/// </summary>
		/// <param name="propid">The propid.</param>
		/// <param name="var">The var.</param>
		/// <returns></returns>
		public int SetProperty(int propid, object var)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Gets the GUID property.
		/// </summary>
		/// <param name="propid">The propid.</param>
		/// <param name="pguid">The pguid.</param>
		/// <returns></returns>
		public int GetGuidProperty(int propid, out Guid pguid)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Sets the GUID property.
		/// </summary>
		/// <param name="propid">The propid.</param>
		/// <param name="rguid">The rguid.</param>
		/// <returns></returns>
		public int SetGuidProperty(int propid, ref Guid rguid)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Queries the view interface.
		/// </summary>
		/// <param name="riid">The riid.</param>
		/// <param name="ppv">The PPV.</param>
		/// <returns></returns>
		public int QueryViewInterface(ref Guid riid, out IntPtr ppv)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Determines whether [is on screen] [the specified pf on screen].
		/// </summary>
		/// <param name="pfOnScreen">The pf on screen.</param>
		/// <returns></returns>
		public int IsOnScreen(out int pfOnScreen)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Advises the broadcast messages.
		/// </summary>
		/// <param name="pSink">The p sink.</param>
		/// <param name="pdwCookie">The PDW cookie.</param>
		/// <returns></returns>
		public int AdviseBroadcastMessages(IVsBroadcastMessageEvents pSink, out uint pdwCookie)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Unadvises the broadcast messages.
		/// </summary>
		/// <param name="dwCookie">The dw cookie.</param>
		/// <returns></returns>
		public int UnadviseBroadcastMessages(uint dwCookie)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Advises the shell property changes.
		/// </summary>
		/// <param name="pSink">The p sink.</param>
		/// <param name="pdwCookie">The PDW cookie.</param>
		/// <returns></returns>
		public int AdviseShellPropertyChanges(IVsShellPropertyEvents pSink, out uint pdwCookie)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Unadvises the shell property changes.
		/// </summary>
		/// <param name="dwCookie">The dw cookie.</param>
		/// <returns></returns>
		public int UnadviseShellPropertyChanges(uint dwCookie)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Loads the package.
		/// </summary>
		/// <param name="guidPackage">The GUID package.</param>
		/// <param name="ppPackage">The pp package.</param>
		/// <returns></returns>
		public int LoadPackage(ref Guid guidPackage, out IVsPackage ppPackage)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Loads the package string.
		/// </summary>
		/// <param name="guidPackage">The GUID package.</param>
		/// <param name="resid">The resid.</param>
		/// <param name="pbstrOut">The PBSTR out.</param>
		/// <returns></returns>
		public int LoadPackageString(ref Guid guidPackage, uint resid, out string pbstrOut)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Loads the UI library.
		/// </summary>
		/// <param name="guidPackage">The GUID package.</param>
		/// <param name="dwExFlags">The dw ex flags.</param>
		/// <param name="phinstOut">The phinst out.</param>
		/// <returns></returns>
		public int LoadUILibrary(ref Guid guidPackage, uint dwExFlags, out uint phinstOut)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Determines whether [is package installed] [the specified GUID package].
		/// </summary>
		/// <param name="guidPackage">The GUID package.</param>
		/// <param name="pfInstalled">The pf installed.</param>
		/// <returns></returns>
		public int IsPackageInstalled(ref Guid guidPackage, out int pfInstalled)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Determines whether [is package loaded] [the specified GUID package].
		/// </summary>
		/// <param name="guidPackage">The GUID package.</param>
		/// <param name="ppPackage">The pp package.</param>
		/// <returns></returns>
		public int IsPackageLoaded(ref Guid guidPackage, out IVsPackage ppPackage)
		{
			throw new NotImplementedException();
		}

		#endregion

		#region IVsUIShell Members

		/// <summary>
		/// Gets the tool window enum.
		/// </summary>
		/// <param name="ppenum">The ppenum.</param>
		/// <returns></returns>
		public int GetToolWindowEnum(out IEnumWindowFrames ppenum)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Gets the document window enum.
		/// </summary>
		/// <param name="ppenum">The ppenum.</param>
		/// <returns></returns>
		public int GetDocumentWindowEnum(out IEnumWindowFrames ppenum)
		{
			ppenum = new MockEnumWindowFrames(new List<IVsWindowFrame> {this});
			return VSConstants.S_OK;
		}

		/// <summary>
		/// Finds the tool window.
		/// </summary>
		/// <param name="grfFTW">The GRF FTW.</param>
		/// <param name="rguidPersistenceSlot">The rguid persistence slot.</param>
		/// <param name="ppWindowFrame">The pp window frame.</param>
		/// <returns></returns>
		public int FindToolWindow(uint grfFTW, ref Guid rguidPersistenceSlot, out IVsWindowFrame ppWindowFrame)
		{
			ppWindowFrame = this;
			return VSConstants.S_OK;
		}

		/// <summary>
		/// Creates the tool window.
		/// </summary>
		/// <param name="grfCTW">The GRF CTW.</param>
		/// <param name="dwToolWindowId">The dw tool window id.</param>
		/// <param name="punkTool">The punk tool.</param>
		/// <param name="rclsidTool">The rclsid tool.</param>
		/// <param name="rguidPersistenceSlot">The rguid persistence slot.</param>
		/// <param name="rguidAutoActivate">The rguid auto activate.</param>
		/// <param name="psp">The PSP.</param>
		/// <param name="pszCaption">The PSZ caption.</param>
		/// <param name="pfDefaultPosition">The pf default position.</param>
		/// <param name="ppWindowFrame">The pp window frame.</param>
		/// <returns></returns>
		public int CreateToolWindow(uint grfCTW, uint dwToolWindowId, object punkTool, ref Guid rclsidTool,
		                            ref Guid rguidPersistenceSlot, ref Guid rguidAutoActivate, IServiceProvider psp,
		                            string pszCaption, int[] pfDefaultPosition, out IVsWindowFrame ppWindowFrame)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Creates the document window.
		/// </summary>
		/// <param name="grfCDW">The GRF CDW.</param>
		/// <param name="pszMkDocument">The PSZ mk document.</param>
		/// <param name="pUIH">The p UIH.</param>
		/// <param name="itemid">The itemid.</param>
		/// <param name="punkDocView">The punk doc view.</param>
		/// <param name="punkDocData">The punk doc data.</param>
		/// <param name="rguidEditorType">Type of the rguid editor.</param>
		/// <param name="pszPhysicalView">The PSZ physical view.</param>
		/// <param name="rguidCmdUI">The rguid CMD UI.</param>
		/// <param name="psp">The PSP.</param>
		/// <param name="pszOwnerCaption">The PSZ owner caption.</param>
		/// <param name="pszEditorCaption">The PSZ editor caption.</param>
		/// <param name="pfDefaultPosition">The pf default position.</param>
		/// <param name="ppWindowFrame">The pp window frame.</param>
		/// <returns></returns>
		public int CreateDocumentWindow(uint grfCDW, string pszMkDocument, IVsUIHierarchy pUIH, uint itemid,
		                                IntPtr punkDocView, IntPtr punkDocData, ref Guid rguidEditorType,
		                                string pszPhysicalView, ref Guid rguidCmdUI, IServiceProvider psp,
		                                string pszOwnerCaption, string pszEditorCaption, int[] pfDefaultPosition,
		                                out IVsWindowFrame ppWindowFrame)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Sets the error info.
		/// </summary>
		/// <param name="hr">The hr.</param>
		/// <param name="pszDescription">The PSZ description.</param>
		/// <param name="dwReserved">The dw reserved.</param>
		/// <param name="pszHelpKeyword">The PSZ help keyword.</param>
		/// <param name="pszSource">The PSZ source.</param>
		/// <returns></returns>
		public int SetErrorInfo(int hr, string pszDescription, uint dwReserved, string pszHelpKeyword, string pszSource)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Reports the error info.
		/// </summary>
		/// <param name="hr">The hr.</param>
		/// <returns></returns>
		public int ReportErrorInfo(int hr)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Gets the dialog owner HWND.
		/// </summary>
		/// <param name="phwnd">The PHWND.</param>
		/// <returns></returns>
		public int GetDialogOwnerHwnd(out IntPtr phwnd)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Enables the modeless.
		/// </summary>
		/// <param name="fEnable">The f enable.</param>
		/// <returns></returns>
		public int EnableModeless(int fEnable)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Saves the doc data to file.
		/// </summary>
		/// <param name="grfSave">The GRF save.</param>
		/// <param name="pPersistFile">The p persist file.</param>
		/// <param name="pszUntitledPath">The PSZ untitled path.</param>
		/// <param name="pbstrDocumentNew">The PBSTR document new.</param>
		/// <param name="pfCanceled">The pf canceled.</param>
		/// <returns></returns>
		public int SaveDocDataToFile(VSSAVEFLAGS grfSave, object pPersistFile, string pszUntitledPath,
		                             out string pbstrDocumentNew, out int pfCanceled)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Setups the toolbar.
		/// </summary>
		/// <param name="hwnd">The HWND.</param>
		/// <param name="ptwt">The PTWT.</param>
		/// <param name="pptwth">The PPTWTH.</param>
		/// <returns></returns>
		public int SetupToolbar(IntPtr hwnd, IVsToolWindowToolbar ptwt, out IVsToolWindowToolbarHost pptwth)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Sets the foreground window.
		/// </summary>
		/// <returns></returns>
		public int SetForegroundWindow()
		{
			return VSConstants.S_OK;
		}

		/// <summary>
		/// Translates the accelerator as A CMD.
		/// </summary>
		/// <param name="pMsg">The p MSG.</param>
		/// <returns></returns>
		public int TranslateAcceleratorAsACmd(MSG[] pMsg)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Updates the command UI.
		/// </summary>
		/// <param name="fImmediateUpdate">The f immediate update.</param>
		/// <returns></returns>
		public int UpdateCommandUI(int fImmediateUpdate)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Updates the doc data is dirty feedback.
		/// </summary>
		/// <param name="docCookie">The doc cookie.</param>
		/// <param name="fDirty">The f dirty.</param>
		/// <returns></returns>
		public int UpdateDocDataIsDirtyFeedback(uint docCookie, int fDirty)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Refreshes the property browser.
		/// </summary>
		/// <param name="dispid">The dispid.</param>
		/// <returns></returns>
		public int RefreshPropertyBrowser(int dispid)
		{
			return VSConstants.S_OK;
		}

		/// <summary>
		/// Sets the wait cursor.
		/// </summary>
		/// <returns></returns>
		public int SetWaitCursor()
		{
			return VSConstants.S_OK;
		}

		/// <summary>
		/// Posts the exec command.
		/// </summary>
		/// <param name="pguidCmdGroup">The pguid CMD group.</param>
		/// <param name="nCmdID">The n CMD ID.</param>
		/// <param name="nCmdexecopt">The n cmdexecopt.</param>
		/// <param name="pvaIn">The pva in.</param>
		/// <returns></returns>
		public int PostExecCommand(ref Guid pguidCmdGroup, uint nCmdID, uint nCmdexecopt, ref object pvaIn)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Shows the context menu.
		/// </summary>
		/// <param name="dwCompRole">The dw comp role.</param>
		/// <param name="rclsidActive">The rclsid active.</param>
		/// <param name="nMenuId">The n menu id.</param>
		/// <param name="pos">The pos.</param>
		/// <param name="pCmdTrgtActive">The p CMD TRGT active.</param>
		/// <returns></returns>
		public int ShowContextMenu(uint dwCompRole, ref Guid rclsidActive, int nMenuId, POINTS[] pos,
		                           IOleCommandTarget pCmdTrgtActive)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Shows the message box.
		/// </summary>
		/// <param name="dwCompRole">The dw comp role.</param>
		/// <param name="rclsidComp">The rclsid comp.</param>
		/// <param name="pszTitle">The PSZ title.</param>
		/// <param name="pszText">The PSZ text.</param>
		/// <param name="pszHelpFile">The PSZ help file.</param>
		/// <param name="dwHelpContextID">The dw help context ID.</param>
		/// <param name="msgbtn">The MSGBTN.</param>
		/// <param name="msgdefbtn">The msgdefbtn.</param>
		/// <param name="msgicon">The msgicon.</param>
		/// <param name="fSysAlert">The f sys alert.</param>
		/// <param name="pnResult">The pn result.</param>
		/// <returns></returns>
		public int ShowMessageBox(uint dwCompRole, ref Guid rclsidComp, string pszTitle, string pszText,
		                          string pszHelpFile, uint dwHelpContextID, OLEMSGBUTTON msgbtn,
		                          OLEMSGDEFBUTTON msgdefbtn, OLEMSGICON msgicon, int fSysAlert, out int pnResult)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Sets the MRU combo text.
		/// </summary>
		/// <param name="pguidCmdGroup">The pguid CMD group.</param>
		/// <param name="dwCmdID">The dw CMD ID.</param>
		/// <param name="lpszText">The LPSZ text.</param>
		/// <param name="fAddToList">The f add to list.</param>
		/// <returns></returns>
		public int SetMRUComboText(ref Guid pguidCmdGroup, uint dwCmdID, string lpszText, int fAddToList)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Sets the toolbar visible in full screen.
		/// </summary>
		/// <param name="pguidCmdGroup">The pguid CMD group.</param>
		/// <param name="dwToolbarId">The dw toolbar id.</param>
		/// <param name="fVisibleInFullScreen">The f visible in full screen.</param>
		/// <returns></returns>
		public int SetToolbarVisibleInFullScreen(Guid[] pguidCmdGroup, uint dwToolbarId, int fVisibleInFullScreen)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Finds the tool window ex.
		/// </summary>
		/// <param name="grfFTW">The GRF FTW.</param>
		/// <param name="rguidPersistenceSlot">The rguid persistence slot.</param>
		/// <param name="dwToolWinId">The dw tool win id.</param>
		/// <param name="ppWindowFrame">The pp window frame.</param>
		/// <returns></returns>
		public int FindToolWindowEx(uint grfFTW, ref Guid rguidPersistenceSlot, uint dwToolWinId,
		                            out IVsWindowFrame ppWindowFrame)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Gets the name of the app.
		/// </summary>
		/// <param name="pbstrAppName">Name of the PBSTR app.</param>
		/// <returns></returns>
		public int GetAppName(out string pbstrAppName)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Gets the color of the VS sys.
		/// </summary>
		/// <param name="dwSysColIndex">Index of the dw sys col.</param>
		/// <param name="pdwRGBval">The PDW RG bval.</param>
		/// <returns></returns>
		public int GetVSSysColor(VSSYSCOLOR dwSysColIndex, out uint pdwRGBval)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Sets the MRU combo text W.
		/// </summary>
		/// <param name="pguidCmdGroup">The pguid CMD group.</param>
		/// <param name="dwCmdID">The dw CMD ID.</param>
		/// <param name="pwszText">The PWSZ text.</param>
		/// <param name="fAddToList">The f add to list.</param>
		/// <returns></returns>
		public int SetMRUComboTextW(Guid[] pguidCmdGroup, uint dwCmdID, string pwszText, int fAddToList)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Posts the set focus menu command.
		/// </summary>
		/// <param name="pguidCmdGroup">The pguid CMD group.</param>
		/// <param name="nCmdID">The n CMD ID.</param>
		/// <returns></returns>
		public int PostSetFocusMenuCommand(ref Guid pguidCmdGroup, uint nCmdID)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Gets the current BF navigation item.
		/// </summary>
		/// <param name="ppWindowFrame">The pp window frame.</param>
		/// <param name="pbstrData">The PBSTR data.</param>
		/// <param name="ppunk">The ppunk.</param>
		/// <returns></returns>
		public int GetCurrentBFNavigationItem(out IVsWindowFrame ppWindowFrame, out string pbstrData, out object ppunk)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Adds the new BF navigation item.
		/// </summary>
		/// <param name="pWindowFrame">The p window frame.</param>
		/// <param name="bstrData">The BSTR data.</param>
		/// <param name="punk">The punk.</param>
		/// <param name="fReplaceCurrent">The f replace current.</param>
		/// <returns></returns>
		public int AddNewBFNavigationItem(IVsWindowFrame pWindowFrame, string bstrData, object punk, int fReplaceCurrent)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Called when [mode change].
		/// </summary>
		/// <param name="dbgmodeNew">The dbgmode new.</param>
		/// <returns></returns>
		public int OnModeChange(DBGMODE dbgmodeNew)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Gets the error info.
		/// </summary>
		/// <param name="pbstrErrText">The PBSTR err text.</param>
		/// <returns></returns>
		public int GetErrorInfo(out string pbstrErrText)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Gets the open file name via DLG.
		/// </summary>
		/// <param name="pOpenFileName">Name of the p open file.</param>
		/// <returns></returns>
		public int GetOpenFileNameViaDlg(VSOPENFILENAMEW[] pOpenFileName)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Gets the save file name via DLG.
		/// </summary>
		/// <param name="pSaveFileName">Name of the p save file.</param>
		/// <returns></returns>
		public int GetSaveFileNameViaDlg(VSSAVEFILENAMEW[] pSaveFileName)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Gets the directory via browse DLG.
		/// </summary>
		/// <param name="pBrowse">The p browse.</param>
		/// <returns></returns>
		public int GetDirectoryViaBrowseDlg(VSBROWSEINFOW[] pBrowse)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Centers the dialog on window.
		/// </summary>
		/// <param name="hwndDialog">The HWND dialog.</param>
		/// <param name="hwndParent">The HWND parent.</param>
		/// <returns></returns>
		public int CenterDialogOnWindow(IntPtr hwndDialog, IntPtr hwndParent)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Gets the previous BF navigation item.
		/// </summary>
		/// <param name="ppWindowFrame">The pp window frame.</param>
		/// <param name="pbstrData">The PBSTR data.</param>
		/// <param name="ppunk">The ppunk.</param>
		/// <returns></returns>
		public int GetPreviousBFNavigationItem(out IVsWindowFrame ppWindowFrame, out string pbstrData, out object ppunk)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Gets the next BF navigation item.
		/// </summary>
		/// <param name="ppWindowFrame">The pp window frame.</param>
		/// <param name="pbstrData">The PBSTR data.</param>
		/// <param name="ppunk">The ppunk.</param>
		/// <returns></returns>
		public int GetNextBFNavigationItem(out IVsWindowFrame ppWindowFrame, out string pbstrData, out object ppunk)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Gets the URL via DLG.
		/// </summary>
		/// <param name="pszDlgTitle">The PSZ DLG title.</param>
		/// <param name="pszStaticLabel">The PSZ static label.</param>
		/// <param name="pszHelpTopic">The PSZ help topic.</param>
		/// <param name="pbstrURL">The PBSTR URL.</param>
		/// <returns></returns>
		public int GetURLViaDlg(string pszDlgTitle, string pszStaticLabel, string pszHelpTopic, out string pbstrURL)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Removes the adjacent BF navigation item.
		/// </summary>
		/// <param name="rdDir">The rd dir.</param>
		/// <returns></returns>
		public int RemoveAdjacentBFNavigationItem(RemoveBFDirection rdDir)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Removes the current navigation dupes.
		/// </summary>
		/// <param name="rdDir">The rd dir.</param>
		/// <returns></returns>
		public int RemoveCurrentNavigationDupes(RemoveBFDirection rdDir)
		{
			throw new NotImplementedException();
		}

		#endregion

		#region IVsRunningDocumentTable Members

		/// <summary>
		/// Registers the and lock document.
		/// </summary>
		/// <param name="grfRDTLockType">Type of the GRF RDT lock.</param>
		/// <param name="pszMkDocument">The PSZ mk document.</param>
		/// <param name="pHier">The p hier.</param>
		/// <param name="itemid">The itemid.</param>
		/// <param name="punkDocData">The punk doc data.</param>
		/// <param name="pdwCookie">The PDW cookie.</param>
		/// <returns></returns>
		public int RegisterAndLockDocument(uint grfRDTLockType, string pszMkDocument, IVsHierarchy pHier, uint itemid,
		                                   IntPtr punkDocData, out uint pdwCookie)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Locks the document.
		/// </summary>
		/// <param name="grfRDTLockType">Type of the GRF RDT lock.</param>
		/// <param name="dwCookie">The dw cookie.</param>
		/// <returns></returns>
		public int LockDocument(uint grfRDTLockType, uint dwCookie)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Unlocks the document.
		/// </summary>
		/// <param name="grfRDTLockType">Type of the GRF RDT lock.</param>
		/// <param name="dwCookie">The dw cookie.</param>
		/// <returns></returns>
		public int UnlockDocument(uint grfRDTLockType, uint dwCookie)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Finds the and lock document.
		/// </summary>
		/// <param name="dwRDTLockType">Type of the dw RDT lock.</param>
		/// <param name="pszMkDocument">The PSZ mk document.</param>
		/// <param name="ppHier">The pp hier.</param>
		/// <param name="pitemid">The pitemid.</param>
		/// <param name="ppunkDocData">The ppunk doc data.</param>
		/// <param name="pdwCookie">The PDW cookie.</param>
		/// <returns></returns>
		public int FindAndLockDocument(uint dwRDTLockType, string pszMkDocument, out IVsHierarchy ppHier,
		                               out uint pitemid, out IntPtr ppunkDocData, out uint pdwCookie)
		{
			ppHier = null;
			pitemid = uint.MaxValue;
			ppunkDocData = IntPtr.Zero;
			pdwCookie = uint.MaxValue;
			return VSConstants.S_OK;
		}

		/// <summary>
		/// Renames the document.
		/// </summary>
		/// <param name="pszMkDocumentOld">The PSZ mk document old.</param>
		/// <param name="pszMkDocumentNew">The PSZ mk document new.</param>
		/// <param name="pHier">The p hier.</param>
		/// <param name="itemidNew">The itemid new.</param>
		/// <returns></returns>
		public int RenameDocument(string pszMkDocumentOld, string pszMkDocumentNew, IntPtr pHier, uint itemidNew)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Advises the running doc table events.
		/// </summary>
		/// <param name="pSink">The p sink.</param>
		/// <param name="pdwCookie">The PDW cookie.</param>
		/// <returns></returns>
		public int AdviseRunningDocTableEvents(IVsRunningDocTableEvents pSink, out uint pdwCookie)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Unadvises the running doc table events.
		/// </summary>
		/// <param name="dwCookie">The dw cookie.</param>
		/// <returns></returns>
		public int UnadviseRunningDocTableEvents(uint dwCookie)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Gets the document info.
		/// </summary>
		/// <param name="docCookie">The doc cookie.</param>
		/// <param name="pgrfRDTFlags">The PGRF RDT flags.</param>
		/// <param name="pdwReadLocks">The PDW read locks.</param>
		/// <param name="pdwEditLocks">The PDW edit locks.</param>
		/// <param name="pbstrMkDocument">The PBSTR mk document.</param>
		/// <param name="ppHier">The pp hier.</param>
		/// <param name="pitemid">The pitemid.</param>
		/// <param name="ppunkDocData">The ppunk doc data.</param>
		/// <returns></returns>
		public int GetDocumentInfo(uint docCookie, out uint pgrfRDTFlags, out uint pdwReadLocks, out uint pdwEditLocks,
		                           out string pbstrMkDocument, out IVsHierarchy ppHier, out uint pitemid,
		                           out IntPtr ppunkDocData)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Notifies the document changed.
		/// </summary>
		/// <param name="dwCookie">The dw cookie.</param>
		/// <param name="grfDocChanged">The GRF doc changed.</param>
		/// <returns></returns>
		public int NotifyDocumentChanged(uint dwCookie, uint grfDocChanged)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Notifies the on after save.
		/// </summary>
		/// <param name="dwCookie">The dw cookie.</param>
		/// <returns></returns>
		public int NotifyOnAfterSave(uint dwCookie)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Gets the running documents enum.
		/// </summary>
		/// <param name="ppenum">The ppenum.</param>
		/// <returns></returns>
		public int GetRunningDocumentsEnum(out IEnumRunningDocuments ppenum)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Saves the documents.
		/// </summary>
		/// <param name="grfSaveOpts">The GRF save opts.</param>
		/// <param name="pHier">The p hier.</param>
		/// <param name="itemid">The itemid.</param>
		/// <param name="docCookie">The doc cookie.</param>
		/// <returns></returns>
		public int SaveDocuments(uint grfSaveOpts, IVsHierarchy pHier, uint itemid, uint docCookie)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Notifies the on before save.
		/// </summary>
		/// <param name="dwCookie">The dw cookie.</param>
		/// <returns></returns>
		public int NotifyOnBeforeSave(uint dwCookie)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Registers the document lock holder.
		/// </summary>
		/// <param name="grfRDLH">The GRF RDLH.</param>
		/// <param name="dwCookie">The dw cookie.</param>
		/// <param name="pLockHolder">The p lock holder.</param>
		/// <param name="pdwLHCookie">The PDW LH cookie.</param>
		/// <returns></returns>
		public int RegisterDocumentLockHolder(uint grfRDLH, uint dwCookie, IVsDocumentLockHolder pLockHolder,
		                                      out uint pdwLHCookie)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Unregisters the document lock holder.
		/// </summary>
		/// <param name="dwLHCookie">The dw LH cookie.</param>
		/// <returns></returns>
		public int UnregisterDocumentLockHolder(uint dwLHCookie)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Modifies the document flags.
		/// </summary>
		/// <param name="docCookie">The doc cookie.</param>
		/// <param name="grfFlags">The GRF flags.</param>
		/// <param name="fSet">The f set.</param>
		/// <returns></returns>
		public int ModifyDocumentFlags(uint docCookie, uint grfFlags, int fSet)
		{
			throw new NotImplementedException();
		}

		#endregion

		#region IVsTrackProjectDocuments2 Members

		/// <summary>
		/// Begins the batch.
		/// </summary>
		/// <returns></returns>
		public int BeginBatch()
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Ends the batch.
		/// </summary>
		/// <returns></returns>
		public int EndBatch()
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Flushes this instance.
		/// </summary>
		/// <returns></returns>
		public int Flush()
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Called when [query add files].
		/// </summary>
		/// <param name="pProject">The p project.</param>
		/// <param name="cFiles">The c files.</param>
		/// <param name="rgpszMkDocuments">The RGPSZ mk documents.</param>
		/// <param name="rgFlags">The rg flags.</param>
		/// <param name="pSummaryResult">The p summary result.</param>
		/// <param name="rgResults">The rg results.</param>
		/// <returns></returns>
		public int OnQueryAddFiles(IVsProject pProject, int cFiles, string[] rgpszMkDocuments,
		                           VSQUERYADDFILEFLAGS[] rgFlags, VSQUERYADDFILERESULTS[] pSummaryResult,
		                           VSQUERYADDFILERESULTS[] rgResults)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Called when [after add files ex].
		/// </summary>
		/// <param name="pProject">The p project.</param>
		/// <param name="cFiles">The c files.</param>
		/// <param name="rgpszMkDocuments">The RGPSZ mk documents.</param>
		/// <param name="rgFlags">The rg flags.</param>
		/// <returns></returns>
		public int OnAfterAddFilesEx(IVsProject pProject, int cFiles, string[] rgpszMkDocuments,
		                             VSADDFILEFLAGS[] rgFlags)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Called when [after add files].
		/// </summary>
		/// <param name="pProject">The p project.</param>
		/// <param name="cFiles">The c files.</param>
		/// <param name="rgpszMkDocuments">The RGPSZ mk documents.</param>
		/// <returns></returns>
		public int OnAfterAddFiles(IVsProject pProject, int cFiles, string[] rgpszMkDocuments)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Called when [after add directories ex].
		/// </summary>
		/// <param name="pProject">The p project.</param>
		/// <param name="cDirectories">The c directories.</param>
		/// <param name="rgpszMkDocuments">The RGPSZ mk documents.</param>
		/// <param name="rgFlags">The rg flags.</param>
		/// <returns></returns>
		public int OnAfterAddDirectoriesEx(IVsProject pProject, int cDirectories, string[] rgpszMkDocuments,
		                                   VSADDDIRECTORYFLAGS[] rgFlags)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Called when [after add directories].
		/// </summary>
		/// <param name="pProject">The p project.</param>
		/// <param name="cDirectories">The c directories.</param>
		/// <param name="rgpszMkDocuments">The RGPSZ mk documents.</param>
		/// <returns></returns>
		public int OnAfterAddDirectories(IVsProject pProject, int cDirectories, string[] rgpszMkDocuments)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Called when [after remove files].
		/// </summary>
		/// <param name="pProject">The p project.</param>
		/// <param name="cFiles">The c files.</param>
		/// <param name="rgpszMkDocuments">The RGPSZ mk documents.</param>
		/// <param name="rgFlags">The rg flags.</param>
		/// <returns></returns>
		public int OnAfterRemoveFiles(IVsProject pProject, int cFiles, string[] rgpszMkDocuments,
		                              VSREMOVEFILEFLAGS[] rgFlags)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Called when [after remove directories].
		/// </summary>
		/// <param name="pProject">The p project.</param>
		/// <param name="cDirectories">The c directories.</param>
		/// <param name="rgpszMkDocuments">The RGPSZ mk documents.</param>
		/// <param name="rgFlags">The rg flags.</param>
		/// <returns></returns>
		public int OnAfterRemoveDirectories(IVsProject pProject, int cDirectories, string[] rgpszMkDocuments,
		                                    VSREMOVEDIRECTORYFLAGS[] rgFlags)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Called when [query rename files].
		/// </summary>
		/// <param name="pProject">The p project.</param>
		/// <param name="cFiles">The c files.</param>
		/// <param name="rgszMkOldNames">The RGSZ mk old names.</param>
		/// <param name="rgszMkNewNames">The RGSZ mk new names.</param>
		/// <param name="rgFlags">The rg flags.</param>
		/// <param name="pSummaryResult">The p summary result.</param>
		/// <param name="rgResults">The rg results.</param>
		/// <returns></returns>
		public int OnQueryRenameFiles(IVsProject pProject, int cFiles, string[] rgszMkOldNames, string[] rgszMkNewNames,
		                              VSQUERYRENAMEFILEFLAGS[] rgFlags, VSQUERYRENAMEFILERESULTS[] pSummaryResult,
		                              VSQUERYRENAMEFILERESULTS[] rgResults)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Called when [query rename file].
		/// </summary>
		/// <param name="pProject">The p project.</param>
		/// <param name="pszMkOldName">Old name of the PSZ mk.</param>
		/// <param name="pszMkNewName">New name of the PSZ mk.</param>
		/// <param name="flags">The flags.</param>
		/// <param name="pfRenameCanContinue">The pf rename can continue.</param>
		/// <returns></returns>
		public int OnQueryRenameFile(IVsProject pProject, string pszMkOldName, string pszMkNewName,
		                             VSRENAMEFILEFLAGS flags, out int pfRenameCanContinue)
		{
			pfRenameCanContinue = 1;
			return VSConstants.S_OK;
		}

		/// <summary>
		/// Called when [after rename files].
		/// </summary>
		/// <param name="pProject">The p project.</param>
		/// <param name="cFiles">The c files.</param>
		/// <param name="rgszMkOldNames">The RGSZ mk old names.</param>
		/// <param name="rgszMkNewNames">The RGSZ mk new names.</param>
		/// <param name="rgFlags">The rg flags.</param>
		/// <returns></returns>
		public int OnAfterRenameFiles(IVsProject pProject, int cFiles, string[] rgszMkOldNames, string[] rgszMkNewNames,
		                              VSRENAMEFILEFLAGS[] rgFlags)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Called when [after rename file].
		/// </summary>
		/// <param name="pProject">The p project.</param>
		/// <param name="pszMkOldName">Old name of the PSZ mk.</param>
		/// <param name="pszMkNewName">New name of the PSZ mk.</param>
		/// <param name="flags">The flags.</param>
		/// <returns></returns>
		public int OnAfterRenameFile(IVsProject pProject, string pszMkOldName, string pszMkNewName,
		                             VSRENAMEFILEFLAGS flags)
		{
			return VSConstants.S_OK;
		}

		/// <summary>
		/// Called when [query rename directories].
		/// </summary>
		/// <param name="pProject">The p project.</param>
		/// <param name="cDirs">The c dirs.</param>
		/// <param name="rgszMkOldNames">The RGSZ mk old names.</param>
		/// <param name="rgszMkNewNames">The RGSZ mk new names.</param>
		/// <param name="rgFlags">The rg flags.</param>
		/// <param name="pSummaryResult">The p summary result.</param>
		/// <param name="rgResults">The rg results.</param>
		/// <returns></returns>
		public int OnQueryRenameDirectories(IVsProject pProject, int cDirs, string[] rgszMkOldNames,
		                                    string[] rgszMkNewNames, VSQUERYRENAMEDIRECTORYFLAGS[] rgFlags,
		                                    VSQUERYRENAMEDIRECTORYRESULTS[] pSummaryResult,
		                                    VSQUERYRENAMEDIRECTORYRESULTS[] rgResults)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Called when [after rename directories].
		/// </summary>
		/// <param name="pProject">The p project.</param>
		/// <param name="cDirs">The c dirs.</param>
		/// <param name="rgszMkOldNames">The RGSZ mk old names.</param>
		/// <param name="rgszMkNewNames">The RGSZ mk new names.</param>
		/// <param name="rgFlags">The rg flags.</param>
		/// <returns></returns>
		public int OnAfterRenameDirectories(IVsProject pProject, int cDirs, string[] rgszMkOldNames,
		                                    string[] rgszMkNewNames, VSRENAMEDIRECTORYFLAGS[] rgFlags)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Advises the track project documents events.
		/// </summary>
		/// <param name="pEventSink">The p event sink.</param>
		/// <param name="pdwCookie">The PDW cookie.</param>
		/// <returns></returns>
		public int AdviseTrackProjectDocumentsEvents(IVsTrackProjectDocumentsEvents2 pEventSink, out uint pdwCookie)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Unadvises the track project documents events.
		/// </summary>
		/// <param name="dwCookie">The dw cookie.</param>
		/// <returns></returns>
		public int UnadviseTrackProjectDocumentsEvents(uint dwCookie)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Called when [query add directories].
		/// </summary>
		/// <param name="pProject">The p project.</param>
		/// <param name="cDirectories">The c directories.</param>
		/// <param name="rgpszMkDocuments">The RGPSZ mk documents.</param>
		/// <param name="rgFlags">The rg flags.</param>
		/// <param name="pSummaryResult">The p summary result.</param>
		/// <param name="rgResults">The rg results.</param>
		/// <returns></returns>
		public int OnQueryAddDirectories(IVsProject pProject, int cDirectories, string[] rgpszMkDocuments,
		                                 VSQUERYADDDIRECTORYFLAGS[] rgFlags, VSQUERYADDDIRECTORYRESULTS[] pSummaryResult,
		                                 VSQUERYADDDIRECTORYRESULTS[] rgResults)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Called when [query remove files].
		/// </summary>
		/// <param name="pProject">The p project.</param>
		/// <param name="cFiles">The c files.</param>
		/// <param name="rgpszMkDocuments">The RGPSZ mk documents.</param>
		/// <param name="rgFlags">The rg flags.</param>
		/// <param name="pSummaryResult">The p summary result.</param>
		/// <param name="rgResults">The rg results.</param>
		/// <returns></returns>
		public int OnQueryRemoveFiles(IVsProject pProject, int cFiles, string[] rgpszMkDocuments,
		                              VSQUERYREMOVEFILEFLAGS[] rgFlags, VSQUERYREMOVEFILERESULTS[] pSummaryResult,
		                              VSQUERYREMOVEFILERESULTS[] rgResults)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Called when [query remove directories].
		/// </summary>
		/// <param name="pProject">The p project.</param>
		/// <param name="cDirectories">The c directories.</param>
		/// <param name="rgpszMkDocuments">The RGPSZ mk documents.</param>
		/// <param name="rgFlags">The rg flags.</param>
		/// <param name="pSummaryResult">The p summary result.</param>
		/// <param name="rgResults">The rg results.</param>
		/// <returns></returns>
		public int OnQueryRemoveDirectories(IVsProject pProject, int cDirectories, string[] rgpszMkDocuments,
		                                    VSQUERYREMOVEDIRECTORYFLAGS[] rgFlags,
		                                    VSQUERYREMOVEDIRECTORYRESULTS[] pSummaryResult,
		                                    VSQUERYREMOVEDIRECTORYRESULTS[] rgResults)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Called when [after SCC status changed].
		/// </summary>
		/// <param name="pProject">The p project.</param>
		/// <param name="cFiles">The c files.</param>
		/// <param name="rgpszMkDocuments">The RGPSZ mk documents.</param>
		/// <param name="rgdwSccStatus">The RGDW SCC status.</param>
		/// <returns></returns>
		public int OnAfterSccStatusChanged(IVsProject pProject, int cFiles, string[] rgpszMkDocuments,
		                                   uint[] rgdwSccStatus)
		{
			throw new NotImplementedException();
		}

		#endregion

		#region IVsUIHierarchyWindow Members

		/// <summary>
		/// Inits the specified p UIH.
		/// </summary>
		/// <param name="pUIH">The p UIH.</param>
		/// <param name="grfUIHWF">The GRF UIHWF.</param>
		/// <param name="ppunkOut">The ppunk out.</param>
		/// <returns></returns>
		public int Init(IVsUIHierarchy pUIH, uint grfUIHWF, out object ppunkOut)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Expands the item.
		/// </summary>
		/// <param name="pUIH">The p UIH.</param>
		/// <param name="itemid">The itemid.</param>
		/// <param name="expf">The expf.</param>
		/// <returns></returns>
		public int ExpandItem(IVsUIHierarchy pUIH, uint itemid, EXPANDFLAGS expf)
		{
			return VSConstants.S_OK;
		}

		/// <summary>
		/// Adds the UI hierarchy.
		/// </summary>
		/// <param name="pUIH">The p UIH.</param>
		/// <param name="grfAddOptions">The GRF add options.</param>
		/// <returns></returns>
		public int AddUIHierarchy(IVsUIHierarchy pUIH, uint grfAddOptions)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Removes the UI hierarchy.
		/// </summary>
		/// <param name="pUIH">The p UIH.</param>
		/// <returns></returns>
		public int RemoveUIHierarchy(IVsUIHierarchy pUIH)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Sets the window help topic.
		/// </summary>
		/// <param name="lpszHelpFile">The LPSZ help file.</param>
		/// <param name="dwContext">The dw context.</param>
		/// <returns></returns>
		public int SetWindowHelpTopic(string lpszHelpFile, uint dwContext)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Gets the state of the item.
		/// </summary>
		/// <param name="pHier">The p hier.</param>
		/// <param name="itemid">The itemid.</param>
		/// <param name="dwStateMask">The dw state mask.</param>
		/// <param name="pdwState">State of the PDW.</param>
		/// <returns></returns>
		public int GetItemState(IVsUIHierarchy pHier, uint itemid, uint dwStateMask, out uint pdwState)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Finds the common selected hierarchy.
		/// </summary>
		/// <param name="grfOpt">The GRF opt.</param>
		/// <param name="lppCommonUIH">The LPP common UIH.</param>
		/// <returns></returns>
		public int FindCommonSelectedHierarchy(uint grfOpt, out IVsUIHierarchy lppCommonUIH)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Sets the cursor.
		/// </summary>
		/// <param name="hNewCursor">The h new cursor.</param>
		/// <param name="phOldCursor">The ph old cursor.</param>
		/// <returns></returns>
		public int SetCursor(IntPtr hNewCursor, out IntPtr phOldCursor)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Gets the current selection.
		/// </summary>
		/// <param name="ppHier">The pp hier.</param>
		/// <param name="pitemid">The pitemid.</param>
		/// <param name="ppMIS">The pp MIS.</param>
		/// <returns></returns>
		public int GetCurrentSelection(out IntPtr ppHier, out uint pitemid, out IVsMultiItemSelect ppMIS)
		{
			throw new NotImplementedException();
		}

		#endregion
	}
}